<?php

namespace CMS\Page\Models;
/**
 * Pomocne funkce pro entitni tridu PageConfig.
 *
 * @author David Dusek
 */

use Doctrine\ORM\EntityRepository;

class PageConfigRepository extends EntityRepository {
    
    /**
     * Vyber configurace pro stranku. Pokud neni v databazi zadny zaznam, 
     * vytvori se novy s natvrdo nastavenymi hodnotami. Podle paramatru likeArray
     * se vrati pole nebo objekt entity.
     * @param boolen $likeArray Pokud je TRUE, vraci pole s hodnotami konfigurace,
     * jinak objekt PageConfig.
     * @return array|PageConfig
     */
    public function getConfig($likeArray = FALSE) {
        $qb = $this->_em->createQueryBuilder();
        $qb = $qb->select('p')
                 ->from("\CMS\Page\Models\PageConfig", 'p')
                 ->setMaxResults(1);        

        try {
            if ($likeArray) {
                $result = $qb->getQuery()->getSingleResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
            } else {
                $result = $qb->getQuery()->getSingleResult();
            }
        } catch (\Doctrine\ORM\NoResultException $e) {
            $config = new \CMS\Page\Models\PageConfig();
            $config->setTitle("Titulek");
            $config->setDescription("Popis");
            $config->setKeywords("Klicova slova");
            $config->setLayout("layout");
            $config->setStyle("style.css");
            $config->setIcon("favicon.ico");
            $this->_em->persist($config);
            $this->_em->flush();
            
            if ($likeArray) {
                $result = $qb->getQuery()->getSingleResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
            } else {
                $result = $qb->getQuery()->getSingleResult();
            }
        }
        
        return $result;
    }
}
